package com.test.study.ToolsUtils.strom.drpc;

import org.apache.storm.Config;
import org.apache.storm.ILocalDRPC;
import org.apache.storm.LocalCluster;
import org.apache.storm.LocalDRPC;
import org.apache.storm.drpc.LinearDRPCTopologyBuilder;
import org.apache.storm.thrift.TException;

/**
 * 使用Strom的drpc (分布式远程过程调用)
 * drpc服务端
 * @author huyong
 *
 */
public class LocalTopologyDrpc {

	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		//参数表示一个函数 名称  这个函数 就是server端需要提供的功能  名称可以随便起  这里已经封装了2个组件  一个是最开始的接受数据的那个supt 一个是最后返回数据的supt
		LinearDRPCTopologyBuilder linearDRPCTopologyBuilder = new LinearDRPCTopologyBuilder("fun");
		linearDRPCTopologyBuilder.addBolt(new MyBolt());
		LocalCluster cluster=new LocalCluster();
		Config config=new Config();
		ILocalDRPC drpc=new LocalDRPC();
		cluster.submitTopology("localTopologyDrpc", config,linearDRPCTopologyBuilder.createLocalTopology(drpc));
		
		//模拟客户端代码
		try {
			String result = drpc.execute("fun", "this is param");
			System.err.println(result);
		} catch (TException e) {
			e.printStackTrace();
		}
		
	}

}
